import { IsEnum, IsNotEmpty, IsString, MaxLength, IsNumberString } from 'class-validator';

/**
 * ? 创建商品分类 dto
 */
export class CreateCategoryDto {
  @IsNumberString({}, { message: '请输入正确的商品分类ID格式' })
  @IsNotEmpty({ message: '商品分类ID不能为空' })
  id: number;

  @IsString()
  @IsNotEmpty({ message: '商品分类名称不能为空' })
  @MaxLength(12, { message: '商品分类名称长度不能大于12位' })
  name: string;

  @IsNumberString({}, { message: '请输入正确的商品分类父ID格式' })
  @IsNotEmpty({ message: '商品分类父ID不能为空' })
  parent_id: number;

  @IsNumberString({}, { message: '请输入正确的商品分类等级格式' })
  @IsNotEmpty({ message: '商品分类等级不能为空' })
  level: number;

  @IsNumberString({}, { message: '请输入正确的商品分类排序格式' })
  sort?: number;

  @IsString()
  @MaxLength(255, { message: '商品分类描述长度不能大于255位' })
  description?: string;

  @IsString()
  @MaxLength(255, { message: '商品分类图标长度不能大于255位' })
  icon?: string;

  @IsEnum(['0', '1', '2'], { message: '请输入正确的商品分类是否显示格式' })
  @IsNotEmpty({ message: '商品分类是否显示不能为空' })
  status?: number;
}

/**
 * ? 更新商品分类 dto
 */
export class UpdateCategoryDto {
  @IsNumberString({}, { message: '请输入正确的商品分类ID格式' })
  @IsNotEmpty({ message: '商品分类ID不能为空' })
  id: number;

  @IsString()
  @MaxLength(12, { message: '商品分类名称长度不能大于12位' })
  name?: string;

  @IsNumberString({}, { message: '请输入正确的商品分类父ID格式' })
  @IsNotEmpty({ message: '商品分类父ID不能为空' })
  parent_id?: number;

  @IsNumberString({}, { message: '请输入正确的商品分类等级格式' })
  @IsNotEmpty({ message: '商品分类等级不能为空' })
  level?: number;

  @IsNumberString({}, { message: '请输入正确的商品分类排序格式' })
  sort?: number;

  @IsString()
  @MaxLength(255, { message: '商品分类描述长度不能大于255位' })
  description?: string;

  @IsString()
  @MaxLength(255, { message: '商品分类图标长度不能大于255位' })
  icon?: string;

  @IsEnum(['0', '1', '2'], { message: '请输入正确的商品分类是否显示格式' })
  @IsNotEmpty({ message: '商品分类是否显示不能为空' })
  status?: number;
}

/**
 * ? 查询商品分类 dto
 */
export class CategoryQueryDto {
  @IsNumberString({}, { message: '请输入正确的商品分类父ID格式' })
  parent_id?: number;

  @IsNumberString({}, { message: '请输入正确的商品分类等级格式' })
  @IsNotEmpty({ message: '商品分类等级不能为空' })
  level?: number;

  @IsEnum(['0', '1', '2'], { message: '请输入正确的商品分类是否显示格式' })
  @IsNotEmpty({ message: '商品分类是否显示不能为空' })
  status?: number;
  @IsNumberString({}, { message: '请输入正确的商品分类分页格式' })
  page?: number;
  @IsNumberString({}, { message: '请输入正确的商品分类分页大小格式' })
  page_size?: number;
}